home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Emulators / v2600 / Source.lha / Source / asm.h < prev    next >
C/C++ Source or Header  |  1997-01-27  |  4KB  |  168 lines

  1. /*****************************************************************************
  2.  
  3.    This file is part of x2600, the Atari 2600 Emulator
  4.    ===================================================
  5.    
  6.    Copyright 1996 Alex Hornby. For contributions see the file CREDITS.
  7.  
  8.    This software is distributed under the terms of the GNU General Public
  9.    License. This is free software with ABSOLUTELY NO WARRANTY.
  10.    
  11.    See the file COPYING for details.
  12.    
  13.    $Id: asm.h,v 1.2 1996/04/01 14:51:50 alex Exp $
  14. ******************************************************************************/
  15.  
  16. /*
  17.  * This file is was part of x64.
  18.  *
  19.  * Error codes and messages used in asm.c and
  20.  * control codes for both asm and mon.
  21.  *
  22.  * Written by
  23.  *   Vesa-Matti Puro (vmp@lut.fi)
  24.  *
  25.  *
  26.  */
  27.  
  28. #ifndef X64_ASM_H
  29. #define X64_ASM_H
  30.  
  31.  
  32. #define NUM_OF_MNEMS    56
  33. #define TOTAL_CODES    256
  34. #define MAXARG        19    /* command + addr + 16 bytes + 1 */
  35.  
  36.  /* optimise searching a little */
  37. #define OP_MNEM_SPC    0x04
  38.  
  39. #define OP_IMPL_MIN    0x00
  40. #define OP_IMPL_MAX    0xfa
  41. #define OP_IMPL_SPC    0x02
  42.  
  43. #define OP_IMM_MIN    0x09
  44. #define OP_IMM_MAX    0xeb
  45. #define OP_IMM_SPC    0x01    /* not used */
  46.  
  47. #define OP_ACCU_MIN    0x0a
  48. #define OP_ACCU_MAX    0x6a
  49. #define OP_ACCU_SPC    0x20
  50.  
  51. #define OP_ABS_MIN    0x0c
  52. #define OP_ABS_MAX    0xff
  53. #define OP_ABS_SPC    0x04
  54.  
  55.  
  56.  /* Symbol definitions */
  57.  
  58. #define SYMBOL_BYTE    1
  59. #define SYMBOL_WORD    2
  60. #define SYMBOL_FOUND    16
  61. #define SYMBOL_SET    32
  62. #define SYMBOL_VALID    64
  63.  
  64. #define SYMBOL_MAX_CHARS 8
  65.     /* For portability, labels should be 6 characters or less. */
  66.  
  67.  
  68.  /*
  69.   * Define 'mode'
  70.   */
  71.  
  72. #define MODE_HEX     1
  73. #define MODE_SYMBOL     2
  74. #define MODE_QUOTE     4
  75. #define MODE_MON    (1 << 5)
  76. #define MODE_ASM    (1 << 6)
  77. #define MODE_INF    (1 << 7)
  78. #define MODE_OUTF    (1 << 8)
  79. #define MODE_QUIET    (1 << 9)
  80. #define MODE_VERBOSE    (1 << 10)
  81. #define MODE_QUERY    (1 << 12)
  82. #define MODE_SPACE    (1 << 13)    /* space terminates calculation (MON) */
  83.  
  84.  
  85.  /*
  86.   * Error messages
  87.   */
  88.  
  89. #define ERRORS_TO_STOP    20    /* screenfull on terminal */
  90.  
  91. #define E_OK            0
  92.  
  93.  /* Warnings */
  94.  
  95. #define E_UNDOCUMENTED        (-1)
  96. #define E_SIZE            (-2)
  97. #define E_LARGE_VALUE        (-3)
  98. #define E_LONG_NAME        (-4)
  99. #define E_FORWARD_REF        (-5)
  100.  
  101.  /* Errors */
  102. #define E_ERROR            (-64)    /* General error */
  103.  
  104. /* Line Syntax */
  105. #define E_SYNTAX        (E_ERROR)
  106. #define E_PARSE_ERROR        (E_ERROR -1)
  107. #define E_TOO_MANY_ERRORS    (E_ERROR -2)
  108.  
  109. /* Assembler */
  110. #define E_BAD_IDENTIFIER    (E_ERROR -8)
  111. #define E_BAD_DIRECTIVE        (E_ERROR -9)
  112. #define E_SYMBOL_UNDEFINED    (E_ERROR -10)
  113. #define E_SYMBOL_REDEF        (E_ERROR -11)
  114. #define E_PC_DECREMENT        (E_ERROR -12)
  115.  
  116. /* Mnemonic */
  117. #define E_BAD_MNEM        (E_ERROR -16)
  118. #define E_LONG_BRANCH        (E_ERROR -17)
  119. #define E_MISSING_OPER        (E_ERROR -18)
  120.  
  121. /* Operand Syntax */
  122. #define E_PARAMETER_SYNTAX    (E_ERROR -24)
  123. #define E_TOO_MANY_COMMAS    (E_ERROR -25)
  124. #define E_RIGHT_PARENTHESIS    (E_ERROR -26)
  125. #define E_LEFT_PARENTHESIS    (E_ERROR -27)
  126. #define E_PARENTHESIS        (E_ERROR -28)
  127.  
  128. #define E_MIXED_XY        (E_ERROR -30)
  129. #define E_MISSING_XY        (E_ERROR -31)
  130. #define E_BAD_INDEX        (E_ERROR -32)
  131.  
  132.  
  133.  
  134.  /* Warnings */
  135. #define EM_UNDOCUMENTED        "Undocumented opcode used"
  136. #define EM_SIZE            "Operand length changed"
  137. #define EM_LARGE_VALUE        "Value too large"
  138. #define EM_LONG_NAME        "Symbol name too long"
  139. #define EM_FORWARD_REF        "Forward reference"
  140.  
  141.  /* Errors */
  142. #define EM_SYNTAX        "Syntax error"
  143. #define EM_PARSE_ERROR        "Parse error: I don't get it."
  144. #define EM_TOO_MANY_ERRORS    "Keep your filthy fingers off here!"
  145.  
  146. #define EM_BAD_IDENTIFIER    "Identifier error"
  147. #define EM_BAD_DIRECTIVE    "Unrecognised directive"
  148. #define EM_SYMBOL_UNDEFINED    "Undefined symbol"
  149. #define EM_SYMBOL_REDEF     "Symbol redefined"
  150. #define EM_PC_DECREMENT        "PC decrement"
  151.  
  152. #define EM_BAD_MNEM        "Illegal mnemonic"
  153. #define EM_LONG_BRANCH        "Branch out of range"
  154. #define EM_MISSING_OPER        "Operand missing"
  155.  
  156. #define EM_PARAMETER_SYNTAX     "Parameter syntax error"
  157. #define EM_TOO_MANY_COMMAS      "Too many commas found"
  158. #define EM_RIGHT_PARENTHESIS    "Too many right parenthesis, 1 is maximum"
  159. #define EM_LEFT_PARENTHESIS     "Too many left parenthesis, 1 is maximum"
  160. #define EM_PARENTHESIS            "Not equally right and left parenthesis"
  161.  
  162. #define EM_MIXED_XY             "Indirect mode indexed both X and Y"
  163. #define EM_MISSING_XY        "Index register missing"
  164. #define EM_BAD_INDEX        "Index register must be X or Y"
  165.  
  166.  
  167. #endif  /* X64_ASM_H */
  168.